function main_capacity()
% 第五章：信道容量与Shannon理论 - 主函数
% 本脚本整合所有容量分析模块，提供完整的容量分析功能

clear; clc; close all;

fprintf('=== 第五章：信道容量与Shannon理论 ===\n');

% 创建结果文件夹（在当前章节目录下）
if ~exist('results', 'dir')
    mkdir('results');
end

%% 参数设置
EbN0_dB = -10:2:30; % 信噪比范围 (dB)

% 信道场景定义
channel_scenarios = {'awgn', 'rayleigh', 'mimo', 'multiuser'};
optimization_types = {'water_filling', 'power_allocation', 'adaptive_modulation', 'beamforming'};

%% 1. AWGN信道容量分析
fprintf('\n1. AWGN信道容量分析...\n');
[awgn_capacities, awgn_efficiencies, fig_awgn] = awgn_capacity(EbN0_dB);
saveas(fig_awgn, 'results/awgn_capacity.png');
close(fig_awgn);

%% 2. 衰落信道容量分析
fprintf('\n2. 衰落信道容量分析...\n');
[fading_capacities, outage_probabilities, fig_fading] = fading_capacity(EbN0_dB);
saveas(fig_fading, 'results/fading_capacity.png');
close(fig_fading);

%% 3. MIMO信道容量分析
fprintf('\n3. MIMO信道容量分析...\n');
[mimo_capacities, scaling_analysis, fig_mimo] = mimo_capacity(EbN0_dB);
saveas(fig_mimo, 'results/mimo_capacity.png');
close(fig_mimo);

%% 4. 多用户系统容量分析
fprintf('\n4. 多用户系统容量分析...\n');
[multiuser_capacities, fairness_metrics, fig_multiuser] = multiuser_capacity(EbN0_dB);
saveas(fig_multiuser, 'results/multiuser_capacity.png');
close(fig_multiuser);

%% 5. Shannon限界分析
fprintf('\n5. Shannon限界分析...\n');
[shannon_limits, capacity_comparison, fig_shannon] = shannon_limit(EbN0_dB, channel_scenarios);
saveas(fig_shannon, 'results/shannon_limits.png');
close(fig_shannon);

%% 6. 容量优化技术
fprintf('\n6. 容量优化技术...\n');
[optimization_results, power_allocation, fig_optimization] = capacity_optimization(EbN0_dB, optimization_types);
saveas(fig_optimization, 'results/capacity_optimization.png');
close(fig_optimization);

%% 总结分析
fprintf('\n=== 容量分析总结 ===\n');

% 计算关键指标
fprintf('\n1. AWGN信道容量 (30 dB时): %.2f Mbps\n', awgn_capacities(end)/1e6);
fprintf('   频谱效率: %.2f bps/Hz\n', awgn_efficiencies(end));

fprintf('\n2. 衰落信道性能:\n');
fprintf('   瑞利衰落容量 (30 dB时): %.2f Mbps\n', fading_capacities(end,1)/1e6);
fprintf('   选择分集增益: %.1f dB\n', 10*log10(fading_capacities(end,2)/fading_capacities(end,1)));
fprintf('   中断概率 (10 dB时): %.1f%%\n', outage_probabilities(round(length(EbN0_dB)/2))*100);

fprintf('\n3. MIMO系统容量:\n');
fprintf('   4x4 MIMO容量 (30 dB时): %.2f Mbps\n', mimo_capacities(end,1)/1e6);
fprintf('   容量缩放因子: %.2f\n', scaling_analysis(end));

fprintf('\n4. 多用户系统:\n');
fprintf('   8用户总容量 (30 dB时): %.2f Mbps\n', multiuser_capacities(end,1)/1e6);
fprintf('   比例公平调度增益: %.1f%%\n', (multiuser_capacities(end,3)/multiuser_capacities(end,1)-1)*100);

fprintf('\n5. Shannon限界:\n');
fprintf('   AWGN理论限界 (30 dB时): %.2f Mbps\n', shannon_limits(end,1)/1e6);
fprintf('   瑞利衰落与AWGN差距: %.1f dB\n', 10*log10(shannon_limits(end,1)/shannon_limits(end,2)));

fprintf('\n6. 优化技术增益:\n');
fprintf('   水填充增益 (30 dB时): %.1f dB\n', 10*log10(optimization_results(end,1)/optimization_results(end,2)));
fprintf('   自适应调制增益: %.1f dB\n', 10*log10(optimization_results(end,3)/optimization_results(end,2)));

% 保存结果数据
save('results/capacity_results.mat', ...
     'awgn_capacities', 'awgn_efficiencies', ...
     'fading_capacities', 'outage_probabilities', ...
     'mimo_capacities', 'scaling_analysis', ...
     'multiuser_capacities', 'fairness_metrics', ...
     'shannon_limits', 'capacity_comparison', ...
     'optimization_results', 'power_allocation', ...
     'EbN0_dB', 'channel_scenarios', 'optimization_types');

fprintf('\n=== 第五章分析完成！所有结果已保存到 Chapter05_ChannelCapacity/results 文件夹 ===\n');

end